//
// Created by LiuYou on 2021/7/19.
//

/**
 * @brief c++的编译器为我们在背后做了太多的服务, 做了太多的工作。可能 sizeof(object) 的结果不是我们想象的那样, 通常要大。
 * 了解编译器对我们所写的c++代码做了什么手脚是非常重要的。
 */


/// \brief Object
///
/// 加上封装后的布局成本(layout costs for adding encapsulation)
///
/// 在 C++ 中, 有两种 class data member: static、nonstatic。
/// 以及三种 class member function: virtual、nonstatic、static。
///
/// C++ Object Model:
///         1. data member
///         2. !(注意: 是类中要有virtual, 那么这个类就会产生一个vptr, 否则没有vptr。)vptr --> vtable
///                     vtable:
///                         type_info
///                         virtual destructor
///                         other virtual member function
///         3.  static data member
///             static member function
///             member function
///             constructor
///             copy constructor
///             copy assignment operator
///             move constructor
///             move assignment operator
/// 注意: sizeof(class)的结果为 1. (nonstatic data member) + (alignment padding) + 2. (为了支持virtual而有内部产生的额外负担overhead)。
///
/// 本质上, 一个 reference 通常是以一个 pointer 来实现的。

#include <cstdlib>

int main() {


    std::exit( 0 );
}